From f719e942dde0a46a9ff0080001cb3466012ffcc0 Mon Sep 17 00:00:00 2001
From: Peter Seiderer <ps.report@gmx.net>
Date: Mon, 9 Mar 2020 13:01:14 +0100
Subject: [PATCH] vc4: add meson option to disable optional neon support

Not all toolchains are able to compile the runtime
optional vc4 neon support, so add an meson option
to force disabling it at compile time.

Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4114
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
[rebased for 20.2.0, 20.3.0, 21.1.0, 23.1.0 & 23.2.0]
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
[fix syntax error after previous rebases]
---
 meson_options.txt                    | 7 +++++++
 src/gallium/drivers/vc4/meson.build  | 4 ++--
 src/gallium/drivers/vc4/vc4_tiling.h | 4 ++--
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/meson_options.txt b/meson_options.txt
index 8e0bf2a..1cf0e07 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -124,6 +124,13 @@ option(
   description : 'enable gallium va frontend.',
 )
 
+option(
+  'gallium-vc4-neon',
+  type : 'feature',
+  deprecated: {'true': 'enabled', 'false': 'disabled'},
+  description : 'enable gallium vc4 optional neon support.',
+)
+
 option(
   'va-libs-path',
   type : 'string',
diff --git a/src/gallium/drivers/vc4/meson.build b/src/gallium/drivers/vc4/meson.build
index 84da951..7f950de 100644
--- a/src/gallium/drivers/vc4/meson.build
+++ b/src/gallium/drivers/vc4/meson.build
@@ -84,7 +84,7 @@ files_libvc4 = files(
 vc4_c_args = []
 
 libvc4_neon = []
-if host_machine.cpu_family() == 'arm'
+if host_machine.cpu_family() == 'arm' and not get_option('gallium-vc4-neon').disabled()
   libvc4_neon = static_library(
     'vc4_neon',
     'vc4_tiling_lt_neon.c',
@@ -93,7 +93,7 @@ if host_machine.cpu_family() == 'arm'
     ],
     c_args : '-mfpu=neon',
   )
-  vc4_c_args += '-DUSE_ARM_ASM'
+  vc4_c_args += '-DVC4_TILING_LT_NEON'
 endif
 
 if dep_simpenrose.found()
diff --git a/src/gallium/drivers/vc4/vc4_tiling.h b/src/gallium/drivers/vc4/vc4_tiling.h
index 5afe329..919b299 100644
--- a/src/gallium/drivers/vc4/vc4_tiling.h
+++ b/src/gallium/drivers/vc4/vc4_tiling.h
@@ -89,7 +89,7 @@ vc4_load_lt_image(void *dst, uint32_t dst_stride,
                   void *src, uint32_t src_stride,
                   int cpp, const struct pipe_box *box)
 {
-#ifdef USE_ARM_ASM
+#ifdef VC4_TILING_LT_NEON
         if (util_get_cpu_caps()->has_neon) {
                 vc4_load_lt_image_neon(dst, dst_stride, src, src_stride,
                                        cpp, box);
@@ -105,7 +105,7 @@ vc4_store_lt_image(void *dst, uint32_t dst_stride,
                    void *src, uint32_t src_stride,
                    int cpp, const struct pipe_box *box)
 {
-#ifdef USE_ARM_ASM
+#ifdef VC4_TILING_LT_NEON
         if (util_get_cpu_caps()->has_neon) {
                 vc4_store_lt_image_neon(dst, dst_stride, src, src_stride,
                                         cpp, box);
-- 
2.41.0

